home *** CD-ROM | disk | FTP | other *** search
- PROGRAM linked_list_example;
-
- TYPE next_pointer = ^full_name;
-
- full_name = RECORD
- first_name : STRING[12];
- initial : CHAR;
- last_name : STRING[15];
- next : next_pointer;
- END;
-
- VAR start_of_list : next_pointer;
- place_in_list : next_pointer;
- temp_place : next_pointer;
- index : INTEGER;
-
- BEGIN (* main program *)
- (* generate the first name in the list *)
- new(place_in_list);
- start_of_list := place_in_list;
- place_in_list^.first_name := 'John';
- place_in_list^.initial := 'Q';
- place_in_list^.last_name := 'Doe';
- place_in_list^.next := NIL;
- (* generate another name in the list *)
- temp_place := place_in_list;
- new(place_in_list);
- temp_place^.next := place_in_list;
- place_in_list^.first_name := 'Mary';
- place_in_list^.initial := 'R';
- place_in_list^.last_name := 'Johnson';
- place_in_list^.next := NIL;
- (* add 10 more names to complete the list *)
- FOR index := 1 TO 10 DO
- BEGIN
- temp_place := place_in_list;
- new(place_in_list);
- temp_place^.next := place_in_list;
- place_in_list^.first_name := 'William';
- place_in_list^.initial := 'S';
- place_in_list^.last_name := 'Jones';
- place_in_list^.next := NIL;
- END;
- (* display the list on the video monitor *)
- place_in_list := start_of_list;
- REPEAT
- WRITE(place_in_list^.first_name);
- WRITE(' ',place_in_list^.initial);
- WRITELN(' ',place_in_list^.last_name);
- temp_place := place_in_list;
- place_in_list := place_in_list^.next;
- UNTIL temp_place^.next = NIL;
- END. (* of main program *)